package com.isoft.airportsystem.entity.flight;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Date;

@Data
public class FlightInfo {
    private String id;
    private String flightId;       // DFLT_FLID航班id
    private String airlineCode;    // DFLT_AWCD航空公司代码
    private String flightNumber;   // DFLT_FLNO航班号

    // 保持 String 类型，避免转换问题（或用 @JsonFormat 配合 Date）航班日期
    private String flightDate;     // DFLT_FEXD (原 @JsonFormat 可保留，用于前端格式化)

    private String flightType;     // DFLT_FATT航班类型编号

    // 如果 SQL 返回的是字符串（如 '2023-10-01 12:00:00'），直接用 Date 可能报错，需确认数据库类型
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date planDepartTime;   // DFLT_FPTT计划起飞时间

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date estDepartTime;    // DFLT_FETT预计起飞时间

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date actualDepartTime; // DFLT_FRTT实际起飞时间

    private String status;         // DFLT_STAT航班状态编码
    private String aircraftType;   // DFLT_CFTP机型
    private String aircraftNumber; // DFLT_CFNO飞机注册号

    // 机场信息增强
    private String departureAirportCode;  // DFLT_APOT出发机场代码
    private String departureAirportName;  // 机场中文名
    private String arrivalAirportCode;    // 到达机场代码
    private String arrivalAirportName;    // 到达机场中文名

    private String checkInCounter; // DFLT_CKLS值机柜台编号
    private String boardingGate;   // DFLT_GTLS登机口编号
    private String baggageClaim;   // DFLT_BLBE_BTNO行李提取转盘编号

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    private Integer isDeleted; // 0-未删除，1-已删除

    // 辅助方法：获取格式化后的航班日期
    public String getFlightDateFormatted() {
        if (flightDate == null || flightDate.length() != 8) {
            return "";
        }
        return String.format("%s-%s-%s",
                flightDate.substring(0, 4),
                flightDate.substring(4, 6),
                flightDate.substring(6, 8));
    }
}